In a computer system, a hardware interrupt is a signal from a hardware device indicating a need to interrupt processing of a program. The purpose of an interrupt is to ensure that high-priority tasks are carried out promptly and not delayed by slower, less important tasks. For example, a real time device such as a hard drive might interrupt the execution of a spreadsheet program to deliver data.
Interrupts may be raised in hardware by sending a signal down a dedicated wire, or in software by executing a special instruction. In either case, the processor typically pushes its current register contents onto a stack to preserve them, and starts to execute a new program known as an interrupt handler. When that is complete, the processor may restore its registers from the stack and continue as before. One interrupt may interrupt another, and so on, to many levels.
In order to handle cases where one interrupt may interrupt another, priority levels are used to differentiate the importance of each interrupt. These priority levels are limited, however. No matter the priority level of an interrupt, it always interrupts the current processing. In certain applications, however, such as switches, it can be very important to preserve kernel processing, while application processing may be easily interrupted.
A need exists, therefore, for a solution that allows for interrupts to be executed by an application without affecting kernel processing.